package com.engine.salary.entity.taxagent.po;

import com.engine.hrmelog.annotation.ElogTransform;
import com.engine.salary.annotation.Auth;
import com.engine.salary.enums.auth.AuthCheckTypeEnum;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamOmitField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Collection;
import java.util.Date;
import java.util.Set;

/**
 * 个税扣缴义务人 hrsa_tax_agent
 * <p>Copyright: Copyright (c) 2022</p>
 * <p>Company: 泛微软件</p>
 *
 * @author qiantao
 * @version 1.0
 **/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ElogTransform(name = "个税扣缴义务人")
@XStreamAlias("TaxAgent")
@Auth(page = "", checkType = AuthCheckTypeEnum.TAX,taxAgentIdField = "id")
public class TaxAgentPO {

    /**
     * 主键id
     */
    @ElogTransform(name = "主键id")
    @XStreamOmitField
    private Long id;

    /**
     * 名称
     */
    @ElogTransform(name = "名称")
    @XStreamAlias("name")
    @XStreamAsAttribute
    private String name;

    /**
     * 代缴机构
     */
    // @ElogTransform(name = "代缴机构")
    @XStreamAlias("paymentAgency")
    @XStreamAsAttribute
    private String paymentAgency;


    /**
     * 排序
     */
    @XStreamAlias("sortedIndex")
    @XStreamAsAttribute
    private Integer sortedIndex;

    /**
     * 备注
     */
    @ElogTransform(name = "备注")
    @XStreamAlias("description")
    @XStreamAsAttribute
    private String description;

    /**
     * 租户key
     */
    @XStreamAlias("tenantKey")
    @XStreamAsAttribute
    private String tenantKey;

    /**
     * 创建人id
     */
    @ElogTransform(name = "创建人id")
    @XStreamAlias("creator")
    @XStreamAsAttribute
    private Long creator;

    /**
     * 是否删除
     */
    @XStreamAlias("deleteType")
    @XStreamAsAttribute
    private Integer deleteType;

    /**
     * 创建时间
     */
    @ElogTransform(name = "创建时间")
    @XStreamAlias("createTime")
    @XStreamAsAttribute
    private Date createTime;

    /**
     * 更新时间
     */
    @ElogTransform(name = "updateTime")
    @XStreamAlias("updateTime")
    @XStreamAsAttribute
    private Date updateTime;


    private Collection<Long> ids;

    Set<String> opts;
}
